home *** CD-ROM | disk | FTP | other *** search
/ Network Supervisor's Toolkit / Network Supervisor's Toolkit.iso / tools / lu62 / proc / fdetach.c < prev    next >
C/C++ Source or Header  |  1996-07-10  |  1KB  |  57 lines

  1. /*
  2.  * CopyRight 1995. Nicholas Poljakov all rights reserved.
  3.  */
  4. #include <malloc.h>
  5. #include <stdio.h>
  6. #include <detach.h>
  7. #include <state1.h>
  8. #include <dos.h>
  9.  detach_lu (lu_id,rc)
  10.  
  11. unsigned char lu_id[8];
  12. unsigned long *rc;
  13.  
  14.  {
  15.        union REGS inregs,outregs;
  16.        struct SREGS segregs;
  17.        struct detach *ptr;
  18.        char _near *dp1;
  19.        char _near *dp2;
  20.        int i,l;
  21.  
  22.     l = sizeof(struct detach);
  23.      if ((ptr = (char *)calloc(1,l)) == NULL)
  24.        {
  25.         *rc = PORT_BUSY;
  26.         return(0);
  27.         }
  28.  
  29.      ptr->verb_cd=Detach_lu;
  30.  
  31.      memcpy (ptr->lu_id,lu_id,8);
  32. /*
  33.      inregs.x.dx = FP_OFF(ptr);
  34.      segregs.ds = FP_SEG(ptr);
  35.      inregs.x.ax = ptr->verb_cd;
  36.  
  37.          int86x(0x68,&inregs,&outregs,&segregs);
  38.  */
  39.      dp1 = FP_OFF( ptr );
  40.      dp2 = FP_SEG( ptr );
  41.      _asm
  42.          {
  43.             push  ds
  44.             mov   dx, word ptr dp1[0]
  45.             mov   ax, word ptr dp2[0]
  46.         mov   ds, ax
  47.         mov   ax, Detach_lu
  48.             int   68h
  49.             pop   ds
  50.          }
  51.  
  52.     *rc = ptr->rc;
  53.     free(ptr);
  54.  
  55.     return(0);
  56.  }
  57.